package cool.webstudy.admin.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import cool.webstudy.admin.model.dto.team.CreateTeamDTO;
import cool.webstudy.admin.model.dto.team.PaginationQueryTeamInfoListDTO;
import cool.webstudy.admin.model.dto.team.TeamDetailInfoDTO;
import cool.webstudy.admin.model.dto.team.UpdateTeamDTO;
import cool.webstudy.admin.model.po.team.TeamPO;
import cool.webstudy.admin.model.vo.team.PaginationQueryTeamInfoListVO;
import cool.webstudy.admin.model.vo.team.QueryOwnTeamDetailInfoVO;
import cool.webstudy.admin.model.vo.team.QueryTeamDetailInfoVO;
import cool.webstudy.admin.model.vo.team.QueryTeamRoughInfoVO;

import java.util.List;
import java.util.Map;

/**
 * @description: 队伍管理接口定义类
 */
public interface TeamService {
    /**
     * @param unCode 队伍业务主键
     * @return UserPO 队伍信息实体
     * @description: 判断队伍否存在，如果存在，则返回该用户的信息实体
     */

    TeamPO isExist(String unCode);

    /**
     * @param unCode 业务主键
     * @return QueryTeamDetailInfoVO 查询队伍详细信息接口响应参数模型
     * @description: 查询队伍详细信息
     */
    QueryTeamDetailInfoVO queryTeamDetailInfo(String unCode);
    /**
     * @param unCode 业务主键
     * @return TeamDetailInfoDTO 队伍详细信息
     * @description: 查询队伍详细信息
     */
    TeamDetailInfoDTO queryTeamDetailInfoDTO(String unCode);

    /**
     * @param dto 创建队伍接口请求参数模型
     * @return Boolean 是否成功标识
     * @description: 创建队伍
     */
    Boolean createTeam(CreateTeamDTO dto);



    /**
     * @param dto 更新队伍接口请求参数模型
     * @return Boolean 是否成功标识
     * @description: 更新队伍
     */
    Boolean updateTeam(UpdateTeamDTO dto);


    /**
     * @param unCodeList 业务主键列表
     * @return Boolean 是否成功标识
     * @description: 批量删除队伍
     */
    Boolean batchDeleteTeam(List<String> unCodeList);


    /**
     * @param dto 分页获取信息列表接口请求参数基础模型
     * @return Page<PaginationQueryTeamInfoListVO> 分页获取队伍信息列表接口响应模型
     * @description: 分页获取队伍信息列表
     */
    Page<PaginationQueryTeamInfoListVO> paginationQueryTeamInfoList(PaginationQueryTeamInfoListDTO dto);
    /**
     * @return List<QueryTeamRoughInfoVO>
     * @description: 获取队伍基本信息列表
     */
    List<QueryTeamRoughInfoVO> queryTeamRoughInfoList();
    /**
     * @return Map<String,String> 队伍基本信息Map,key为队伍业务主键，value为队伍名称
     * @description: 获取队伍基本信息Map
     */
    Map<String,String> queryTeamRoughInfoMap();
}


